//package com.tech.connect.activity;
//
//import android.os.Bundle;
//import android.support.annotation.Nullable;
//import android.view.View;
//import android.widget.Button;
//
//import com.ksy.video.Config;
//import com.pili.pldroid.player.AVOptions;
//import com.pili.pldroid.player.PLOnBufferingUpdateListener;
//import com.pili.pldroid.player.PLOnCompletionListener;
//import com.pili.pldroid.player.PLOnErrorListener;
//import com.pili.pldroid.player.PLOnInfoListener;
//import com.pili.pldroid.player.PLOnPreparedListener;
//import com.pili.pldroid.player.PLOnSeekCompleteListener;
//import com.pili.pldroid.player.PLOnVideoSizeChangedListener;
//import com.pili.pldroid.player.PlayerState;
//import com.pili.pldroid.player.widget.PLVideoTextureView;
//import com.pili.pldroid.player.widget.PLVideoView;
//import com.tech.connect.R;
//
//import java.math.BigInteger;
//
//public class VideoPlayActivity extends BaseActivity {
//
//    private PLVideoTextureView videoView;
//    private Button btStart;
//    private Button btPause;
//
//    @Override
//    protected void onCreate(@Nullable Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_video_play);
//        initView();
//    }
//
//    private void initView() {
//        btStart = findViewById(R.id.btStart);
//        btStart.setEnabled(false);
//        btPause = findViewById(R.id.btPause);
//        btPause.setEnabled(false);
//        videoView = findViewById(R.id.videoView);
//        videoView.setAVOptions(initOptions());
////        MediaController mMediaController = new MediaController(this);
////        videoView.setMediaController(mMediaController);
//        btStart.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                PlayerState playerState = videoView.getPlayerState();
//                if(playerState==PlayerState.PREPARED||playerState==PlayerState.PAUSED||playerState==PlayerState.COMPLETED){
//                    videoView.start();
//                }
//            }
//        });
//        btPause.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                PlayerState playerState = videoView.getPlayerState();
//                if(playerState==PlayerState.PLAYING){
//                    videoView.pause();
//                }
//            }
//        });
//        videoView.setOnPreparedListener(new PLOnPreparedListener() {
//            @Override
//            public void onPrepared(int i) {
//                //初始化完成可以start
//                btStart.setEnabled(true);
//                btPause.setEnabled(true);
//            }
//        });
//        videoView.setOnInfoListener(new PLOnInfoListener() {
//            @Override
//            public void onInfo(int what, int extra) {
//                //信息回调
//            }
//        });
//        videoView.setOnCompletionListener(new PLOnCompletionListener() {
//            @Override
//            public void onCompletion() {
//                //播放完成
//                videoView.stopPlayback();
//            }
//        });
//        videoView.setOnBufferingUpdateListener(new PLOnBufferingUpdateListener() {
//            @Override
//            public void onBufferingUpdate(int percent) {
//                //缓存进度 当前播放器已经缓冲的数据量占整个视频时长的百分比
//            }
//        });
//        videoView.setOnVideoSizeChangedListener(new PLOnVideoSizeChangedListener() {
//            @Override
//            public void onVideoSizeChanged(int i, int i1) {
//                //该回调用于监听当前播放的视频流的尺寸信息，在 SDK 解析出视频的尺寸信息后，会触发该回调，开发者可以在该回调中调整 UI 的视图尺寸
//            }
//        });
//        videoView.setOnSeekCompleteListener(new PLOnSeekCompleteListener() {
//            @Override
//            public void onSeekComplete() {
//
//            }
//        });
//        videoView.setOnErrorListener(new PLOnErrorListener() {
//            @Override
//            public boolean onError(int i) {
////                MEDIA_ERROR_UNKNOWN	-1	未知错误
////                ERROR_CODE_OPEN_FAILED	-2	播放器打开失败
////                ERROR_CODE_IO_ERROR	-3	网络异常
////                ERROR_CODE_SEEK_FAILED	-4	拖动失败
////                ERROR_CODE_HW_DECODE_FAILURE	-2003	硬解失败
////                ERROR_CODE_PLAYER_DESTROYED	-2008	播放器已被销毁，需要再次 setVideoURL 或 prepareAsync
////                ERROR_CODE_PLAYER_VERSION_NOT_MATCH	-9527	so 库版本不匹配，需要升级
////                ERROR_CODE_PLAYER_CREATE_AUDIO_FAILED	-4410	AudioTrack 初始化失败，可能无法播放音频
//                return false;
//            }
//        });
//        //原始尺寸、适应屏幕、全屏铺满、16:9、4:3
////        videoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_ORIGIN);
//        videoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_FIT_PARENT);
////        videoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_PAVED_PARENT);
////        videoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_16_9);
////        videoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_4_3);
//        videoView.setDisplayOrientation(0); // 旋转90度
//        videoView.setMirror(false);
////        videoView.setBufferingIndicator();
//
//        videoView.setVideoPath("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4");
//    }
//
//    private void start() {
//        videoView.start();
//    }
//
//    private void pause() {
//        videoView.pause();
//    }
//
//    private void setBufferingEnabled(boolean bufferingEnabled) {
//        videoView.setBufferingEnabled(bufferingEnabled);
//    }
//
//    public void setCoverView(View coverView) {
//        videoView.setCoverView(coverView);
//    }
//
//    public PlayerState getPlayerState() {
//        return videoView.getPlayerState();
//    }
//
//    public BigInteger getHttpBufferSize() {
//        BigInteger httpBufferSize = videoView.getHttpBufferSize();
//        return httpBufferSize;
//    }
//
//    private AVOptions initOptions() {
//        AVOptions options = new AVOptions();
//// 解码方式:
//// codec＝AVOptions.MEDIA_CODEC_HW_DECODE，硬解
//// codec=AVOptions.MEDIA_CODEC_SW_DECODE, 软解
//// codec=AVOptions.MEDIA_CODEC_AUTO, 硬解优先，失败后自动切换到软解
//// 默认值是：MEDIA_CODEC_SW_DECODE
//        options.setInteger(AVOptions.KEY_MEDIACODEC, AVOptions.MEDIA_CODEC_AUTO);
//// 快开模式，启用后会加快该播放器实例再次打开相同协议的视频流的速度
//        options.setInteger(AVOptions.KEY_FAST_OPEN, 0);
//// 打开重试次数，设置后若打开流地址失败，则会进行重试
//        options.setInteger(AVOptions.KEY_OPEN_RETRY_TIMES, 3);
//// 预设置 SDK 的 log 等级， 0-4 分别为 v/d/i/w/e
//        options.setInteger(AVOptions.KEY_LOG_LEVEL, 2);
//// 打开视频时单次 http 请求的超时时间，一次打开过程最多尝试五次
//// 单位为 ms
//        options.setInteger(AVOptions.KEY_PREPARE_TIMEOUT, 8 * 1000);
//// 默认的缓存大小，单位是 ms
//// 默认值是：500
//        options.setInteger(AVOptions.KEY_CACHE_BUFFER_DURATION, 500);
//// 最大的缓存大小，单位是 ms
//// 默认值是：2000，若设置值小于 KEY_CACHE_BUFFER_DURATION 则不会生效
//        options.setInteger(AVOptions.KEY_MAX_CACHE_BUFFER_DURATION, 4000);
//// 设置拖动模式，1 位精准模式，即会拖动到时间戳的那一秒；0 为普通模式，会拖动到时间戳最近的关键帧。默认为 0
//        options.setInteger(AVOptions.KEY_SEEK_MODE, 1);
//// 设置偏好的视频格式，设置后会加快对应格式视频流的打开速度，但播放其他格式会出错
//// m3u8 = 1, mp4 = 2, flv = 3
//        options.setInteger(AVOptions.KEY_PREFER_FORMAT, 2);
//// 开启解码后的视频数据回调
//// 默认值为 0，设置为 1 则开启
//        options.setInteger(AVOptions.KEY_VIDEO_DATA_CALLBACK, 1);
//// 开启解码后的音频数据回调
//// 默认值为 0，设置为 1 则开启
//        options.setInteger(AVOptions.KEY_VIDEO_DATA_CALLBACK, 1);
//        options.setInteger(AVOptions.KEY_START_POSITION, 0);
////本地缓存功能，目前只支持 HTTP(s)-mp4 文件点播，开启本地缓存功能，只需要在播放前，配置缓存目录即可
//        options.setString(AVOptions.KEY_CACHE_DIR, Config.DEFAULT_CACHE_DIR);
//        options.setString(AVOptions.KEY_CACHE_EXT, "");
//        return options;
//    }
//}
